#include "animatedialog.h"
#include<QHBoxLayout>
#include<QPainter>
AnimateDialog::AnimateDialog(QWidget *parent) :  // 构造函数，继承自 QDialog，接受一个父 QWidget 参数
    QDialog(parent)  // 调用基类 QDialog 的构造函数，传入父级窗口
{
    setAttribute(Qt::WA_TranslucentBackground);  // 设置窗口背景为透明，使窗口内容可以呈现背景
    setWindowFlags(Qt::FramelessWindowHint);  // 设置窗口为无边框窗口，不显示标准的窗口框架（如标题栏和边框）

    // 创建一个水平布局管理器
    QHBoxLayout *layout = new QHBoxLayout();
    layout->setContentsMargins(0, 0, 0, 0);  // 设置布局的边距为 0，去掉控件间的空隙

    // 创建两个页面（`Page1` 和 `Page2`）
    m_page1 = new Page1(this);  // 创建 Page1 页面并设置父窗口为当前窗口（`this`）
    m_page2 = new Page2(this);  // 创建 Page2 页面并设置父窗口为当前窗口（`this`）

    // 创建一个 `AnimateStackedWidget` 用于实现页面切换动画
    m_asw = new AnimateStackedWidget(this);  // 创建 `AnimateStackedWidget` 对象

    // 将页面添加到 `AnimateStackedWidget` 中
    m_asw->addWidget(m_page1);  // 将 Page1 添加到堆叠控件中
    m_asw->addWidget(m_page2);  // 将 Page2 添加到堆叠控件中

    // 连接 `Page1` 和 `Page2` 的信号到当前对话框的槽函数
    QObject::connect(m_page1, &Page1::Page1Clicked, this, &AnimateDialog::onPage1Clicked);
    QObject::connect(m_page2, &Page2::Page2Clicked, this, &AnimateDialog::onPage2Clicked);

    // 将堆叠控件添加到布局中
    layout->addWidget(m_asw);  // 将 `m_asw` 添加到布局中

    // 设置当前窗口的布局
    this->setLayout(layout);  // 设置窗口的主布局为 `layout`

    // 设置窗口样式，使背景透明
    setStyleSheet("AnimateDialog { background-color: rgba(0, 0, 0, 0); }");  // 设置窗口的背景颜色为完全透明
}


AnimateDialog::~AnimateDialog()
{

}

void AnimateDialog::onPage1Clicked()
{
    m_asw->SetstartVal(0);   //翻转的起始值
    m_asw->SetendVal(180);     //翻转的结束值
    //m_asw实现动画效果
    m_asw->animation(1);
}

void AnimateDialog::onPage2Clicked()
{
    m_asw->SetstartVal(0);   //翻转的起始值
    m_asw->SetendVal(-180);     //翻转的结束值
    //m_asw实现动画效果
    m_asw->animation(0);
}
